/*
*       这个文件可以用来记录最简单的linux驱动的测试应用该怎么写，
*   因为几乎所有的设备驱动的测试app都是这么写的。
*/

#include "stdio.h"                  /*  这个头文件应该是arm-gcc里面的*/
#include "unistd.h"             
#include "sys/types.h"
#include "sys/stat.h"
#include "fcntl.h"
#include "stdlib.h"
#include "string.h"

#define             LED_RED           'R'
#define             LED_GREEN          'G'
#define             LED_BLUE           'B'

/*
 * @description		: main主程序
 * @param - argc 	: argv数组元素个数,就是传进来的参数的个数
 * @param - argv 	: 具体参数，就是传进来的参数被储存在这个数组,本质上是一个二维数组
 * @return 			: 0 成功;其他 失败
 */

int main(int argc, char *argv[])        
{
    int retvalue = 0;
    int fd ;
    char * filename;
    char databuf[1];

    if(argc != 3){
        printf("\r\n Error Usage! \r\n");               /*  传如的参数过多或者过少，应该是 1.程序名称(默认的)
                                                                                           2.驱动的路径
                                                                                           3.写入的数据(随具体情况变化)*/
        return -1;
    }

    filename = argv[1];

    /*  打开驱动    */
    fd = open(filename , O_RDWR);       /*  打开权限设置成可读可写,对应执行驱动的open函数*/
    if(fd < 0){
        printf("\r\n open dev failed\r\n");
        return -1;
    }

    databuf[0] = argv[2][0];
    /*  写入数据    */
    retvalue = write(fd, databuf, sizeof(databuf));
    if(retvalue < 0){
        printf("\r\n write failed\r\n");
        close(fd);
        return -1;
    }
    retvalue = close(fd);
    if(retvalue < 0){
        printf("\r\n close failed\r\n");
        return -1;
    }
    return 0;
}